package model

import (
	"fmt"
    "gorm.io/gorm"
    "gorm.io/driver/mysql"
)

var (
	DB *gorm.DB
)

type Dict = map[string]interface{}

var ErrNotFound = gorm.ErrRecordNotFound

func InitDB(dsn string) *gorm.DB {
    // dsn := "user:password@tcp(host:port)/database?charset=utf8mb4&parseTime=True&loc=Local"
    var err error
    DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        // 处理连接错误
        panic("连接数据库失败")
    }
    fmt.Printf("数据库连接成功\n")

    sqlDB, _ := DB.DB()
    //设置数据库连接池参数
    fmt.Printf("设置数据库连接池最大连接数 100\n")
    sqlDB.SetMaxOpenConns(100)   //设置数据库连接池最大连接数

    fmt.Printf("连接池最大允许的空闲连接数 10\n")
    sqlDB.SetMaxIdleConns(10)   //连接池最大允许的空闲连接数，如果没有sql任务需要执行的连接数大于20，超过的连接会被连接池关闭。

    // defer db.Close()
    return DB
}
